﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Drawing;
using System.Data;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Net;
using System.Configuration;

using BLL;

namespace CRM.GUI.HeThong
{
    public partial class ucAsteriskConfig : UserControl
    {
        public ucAsteriskConfig()
        {
            InitializeComponent();
            LoadConfig();
        }
        System.Configuration.Configuration config =
         ConfigurationManager.OpenExeConfiguration
                    (System.Windows.Forms.Application.ExecutablePath);

        private void btnTest_Click(object sender, EventArgs e)
        {
            switch (CheckDomainInput())
            {
                case 1:
                    MessageBox.Show("Chưa nhập đủ thông tin", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Error);
                    return;
                case 2:
                    MessageBox.Show("IP hoặc Port không hợp lệ", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Error);
                    return;
                case 3:
                    MessageBox.Show("Kết nối đến Tổng đài thất bại, hãy xem lại thông tin đã nhập và thử lại", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Error);
                    return;
                case 4:
                    MessageBox.Show("Kết nối thành công", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Information);
                    return;
            }
        }

        private void btnOK_Click(object sender, EventArgs e)
        {
            switch (CheckDomainInput())
            {
                case 1:
                    MessageBox.Show("Chưa nhập đủ thông tin", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Error);
                    return;
                case 2:
                    MessageBox.Show("IP hoặc Port không hợp lệ", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Error);
                    return;
                case 3:
                    MessageBox.Show("Kết nối đến Tổng đài thất bại, hãy xem lại thông tin đã nhập và thử lại", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Error);
                    return;
                case 4:
                    SaveConfig();
                    break;
            }

        }

        private int CheckDomainInput()
        {
            string IP = txtIP.Text.Trim();
            string UserName = txtUserName.Text.Trim();
            string Pass = txtPass.Text.Trim();
            int Port;
            IPAddress ipAddress;
            if (txtIP.Text.Length == 0 || txtPort.Text.Length == 0 || txtUserName.Text.Length == 0 || txtPass.Text.Length == 0)
            {
                return 1;
            }
            else
            {
                if (!IPAddress.TryParse(IP, out ipAddress) || !int.TryParse(txtPort.Text.Trim(), out Port))
                {
                    return 2;
                }
                else
                {
                    CallMonitor call = new CallMonitor();
                    if (!call.CheckAsteriskConnect(IP, int.Parse(txtPort.Text.Trim()), UserName, Pass))
                    {
                        return 3;
                    }
                    else
                    {
                        return 4;
                    }
                }
            }
        }

        private void SaveConfig()
        {            
            Administrators ad = new Administrators();
            string message = "";
            Dictionary<string, string> con = new Dictionary<string, string>();
            con.Add("DomainName", txtIP.Text.Trim());
            con.Add("Account", txtUserName.Text.Trim());
            con.Add("Password",  txtPass.Text.Trim());
            con.Add("Port", txtPort.Text.Trim());
            con.Add("PrefixNum", txtPrefixNum.Text.Trim());
            ad.SaveConfig(con, ref message);
            MessageBox.Show(message, "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Information); 
        }

        private void LoadConfig()
        {
            txtIP.Text = config.AppSettings.Settings["DomainName"].Value;
            txtUserName.Text = config.AppSettings.Settings["Account"].Value;
            txtPass.Text = config.AppSettings.Settings["Password"].Value;
            txtPort.Text = config.AppSettings.Settings["Port"].Value;
            txtPrefixNum.Text = config.AppSettings.Settings["PrefixNum"].Value;
        }

        private void btnRevert_Click(object sender, EventArgs e)
        {
            var parentform = this.ParentForm;
            parentform.Close();
        }
    }
}
